package com.its.web;

import com.its.pojo.HupRegion;
import com.its.service.HupRegionService;
import com.its.util.HttpStatusEnum;
import com.its.util.Result;
import io.swagger.annotations.Api;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * <p>
 *  前端控制器
 * </p>
 *
 * @author 朱厚强
 * @since 2023年12月27日
 */
@RestController
@RequestMapping("/hupRegion")
@Api(tags = "地区 -api")
public class HupRegionController {
    @Autowired
    private HupRegionService service;
    /**
     * 同步地区信息到redis
     */
    @GetMapping("/synchronizationArea")
    public Result synchronizationArea(){
        Boolean b = service.synchronizationArea();
        if (b){
            return Result.ok().code(HttpStatusEnum.SUCCESS.getCode()).message("同步省市信息成功");
        }else {
            return Result.error().code(HttpStatusEnum.ERROR.getCode()).message("同步数据到redis或查询mysql数据库时出错了");
        }
    }
    /**
     * 获取地区信息
     */
    @GetMapping("/getAreaForRedis/{key}")
    public Result getAreaForRedis(@PathVariable String key){
        List<String> list = service.getAreaForRedis(key);
        if (list.size()>0){
            return Result.ok().code(HttpStatusEnum.SUCCESS.getCode()).data(list).message("redis数据查询成功");
        }else {
            return Result.error().code(HttpStatusEnum.ERROR.getCode()).data(list).message("redis数据查询失败");
        }
    }

    /**
     * 获取所有的省市区信息
     */
    @GetMapping("/getAllAreaForRedis")
    public Result getAllAreaForRedis(@RequestParam String pid ,@RequestParam String cid ){
        List<String> pList = service.getAreaForRedis("0");// 查询所有的省
        List<String> cList = service.getAreaForRedis(pid); // 查询具体省下的所有的市
        List<String> dList = service.getAreaForRedis(cid); // 查询具体市下的所有的区
        if (pList.size()>0 && cList.size()>0 && dList.size()>0) {
            Map<String ,List<String>> areaMap = new HashMap<>();
            areaMap.put("pList",pList);
            areaMap.put("cList",cList);
            areaMap.put("dList",dList);
            return Result.ok().code(HttpStatusEnum.SUCCESS.getCode()).data(areaMap).message("redis数据查询成功");
        }else {
            return Result.error().code(HttpStatusEnum.ERROR.getCode()).message("redis数据查询失败");
        }
    }


}
